package chaoyue.study.safe;

import chaoyue.study.ThreadUtils;

import java.util.concurrent.*;

/**
 * 在线程池场景下，ThreadLocalMap如果使用不当可能会出现问题
 */
public class ThreadLocalTest2 {
    private static final ThreadLocal<String> local = new ThreadLocal<>();

    public static void main(String[] args) {
        // 创建只有一个线程的线程池
        ExecutorService pool = Executors.newSingleThreadExecutor();
        // 第一个线程设置threadLocal
        pool.submit(() -> local.set("chaoyue"));
        ThreadUtils.sleep();
        // 因为线程复用的问题，第二个任务可以拿到第一个任务中set的数据内容
        pool.submit(() -> System.out.println(local.get()));
        pool.shutdown();
    }
}
